package level02.two;

import level02.two.BookDAO;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyProxy implements InvocationHandler {

    //代理目标对象
    private BookDAO bookDAO;

    //为后续创建对象提供构造方法
    public MyProxy(BookDAO bookDAO) {
        this.bookDAO = bookDAO;
    }

    /**
     * @param proxy 代理对象
     * @param method 代理对象执行的那个方法
     * @param args 代理对象执行那个方法传递的参数
     * @return 代理对象调用方法的返回值
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //获取方法名字
        String name = method.getName();

                System.out.println(name+"的权限检查");
                method.invoke(bookDAO, args);
                System.out.println(name+"的写入");

        return null;
    }
}
